package com.mazaiting.emotion

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import androidx.fragment.app.Fragment
import com.mazaiting.emotion.util.SwitchKeyboard

/***
 *
 *
 *                                                    __----~~~~~~~~~~~------___
 *                                   .  .   ~~//====......          __--~ ~~
 *                   -.            \_|//     |||\\  ~~~~~~::::... /~
 *                ___-==_       _-~o~  \/    |||  \\            _/~~-
 *        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
 *    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
 *  .~       .~       |   \\ -_    /  /-   /   ||      \   /
 * /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
 * |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
 *          '         ~-|      /|    |-~\~~       __--~~
 *                      |-~~-_/ |    |   ~\_   _-~            /\
 *                           /  \     \__   \/~                \__
 *                       _--~ _/ | .-~~____--~-/                  ~~==.
 *                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
 *                                 -_     ~\      ~~---l__i__i__i--~~_/
 *                                 _-~-__   ~)  \--______________--~~
 *                               //.-~~~-~_--~- |-------~~~~~~~~
 *                                      //.-~~~--\
 *                               神兽保佑
 *                              代码无BUG!
 * @author mazaiting
 * @date 2019-08-08
 * @description 键盘替换面板父类
 * 使用时继承此类, 并实现 getLayoutId() 和 bindView(view) 方法
 * @param contentView 内容布局, 用户固定键盘的高度
 * @param editText 输入框
 * @param switchView 切换的布局
 */
open class BasePanelFragment constructor(contentView: View, editText: EditText, switchView: View):Fragment() {

    /**
     * 内容布局
     */
    private var mContentView: View = contentView
    /**
     * 表情面板
     */
    private var mSwitchKeyboard: SwitchKeyboard? = null
    /**
     * 输入框啊
     */
    private var mEditText: EditText = editText
    /**
     * 切换按钮
     */
    private var mSwitchView: View = switchView

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // 加载布局
        val rootView = inflater.inflate(getLayoutId(), container, false)
        // 初始化切换键盘面板
        mSwitchKeyboard = SwitchKeyboard.with(activity!!)
            // 绑定内容view
            .bindToContent(mContentView)
            // 绑定EditView
            .bindToEditText(mEditText)
            // 绑定切换按钮
            .bindToSwitch(mSwitchView)
            // 绑定显示面板
            .setEmotionView(rootView)
            .build()

        // 默认隐藏
        rootView.visibility = View.GONE

        bindView(rootView)

        return rootView
    }

    /**
     * 绑定视图
     */
    open fun bindView(view: View) {}

    /**
     * 获取布局 ID
     */
    open fun getLayoutId(): Int = R.layout.fragment_emotion

    /**
     * 是否拦截返回键操作，如果此时表情布局未隐藏，先隐藏表情布局
     * @return true则隐藏表情布局，拦截返回键操作
     * false 则不拦截返回键操作
     */
    fun isInterceptBackPress(): Boolean {
        return if (null != mSwitchKeyboard) {
            mSwitchKeyboard!!.interceptBackPress()
        } else {
            false
        }
    }
}